#include "stdlib.h"
#include "stdio.h"

#define SQLIST_INIT_SIZE 100
#define SQLIST_INCREMENT 10

typedef int ElementType;
typedef struct{
    ElementType *elem;
    int size;
    int length;
}SqList;

void initByUser(SqList &list1, SqList &list2, int len1, int len2){
    
    //初始化
    list1.elem = (ElementType *) malloc(len1 * sizeof(ElementType));
    if(!list1.elem)
        exit(-1);
    list1.length = list1.size =len1;

    list2.elem = (ElementType *) malloc(len2 * sizeof(ElementType));
    if(!list2.elem)
        exit(-1);
    list2.length = list2.size =len2;
    //用户输入
    printf("输入%d个递增整数为第1个顺序表赋值:\n", len1);
    for(int i = 0; i < len1; i++){
        scanf("%d", list1.elem + i);
    }

    printf("输入%d个递增整数为第2个顺序表赋值:\n", len2);
    for(int i = 0; i < len2; i++){
        scanf("%d", list2.elem + i);
    }
    
}

void mergeTowAscendingList(SqList &list1, SqList &list2, SqList &list3){
    int len = list1.length + list2.length;
    list3.elem = (ElementType *) malloc(len * sizeof(ElementType));
    list3.length = list3.size = len;
    int i = 0, j = 0;
    int cur = 0;
    while(i < list1.length && j < list2.length){
        if(list1.elem[i] <= list2.elem[j]){
            list3.elem[cur++] = list1.elem[i++];
        }else{
            list3.elem[cur++] = list2.elem[j++];
        }
    }
    while(i < list1.length){
        list3.elem[cur++] = list1.elem[i++];
    }
    while(j < list2.length){
        list3.elem[cur++] = list2.elem[j++];
    }
}


void printSqList(SqList &list){
    for(int i = 0; i < list.length; i++){
        if(i % 10 == 0)
            printf("\n");
        printf("%d\t", list.elem[i]);
    }
}
// void init(SqList &list){
//     list.elem = (ElementType *) malloc(SQLIST_INIT_SIZE * sizeof(ElementType));
//     if(!list.elem){
//         exit(-1);
//     }
//     list.size = SQLIST_INIT_SIZE;
//     list.length = 0;
// }

// void getEle(SqList &list, int i, ElementType &e){
//     if(i < 1 || i > list.length){
//         return;
//     }
//     e = list.elem[i - 1];
// }

// void insert(SqList &list, int i, ElementType e){
//     if(i < 1 || i > list.length + 1){
//         return;
//     }
//     if(list.length == list.size){
//         list.elem = (ElementType *) realloc(list.elem, (list.length + SQLIST_INCREMENT) * sizeof(ElementType));
//         if(!list.elem){
//             return;
//         }
//         list.size += SQLIST_INCREMENT;
//     }
//     for(int j = list.length; j >= i; j--){
//         list.elem[j] = list.elem[j - 1];
//     }
//     list.elem[i - 1] = e;
//     list.length++;
// }

// void del(SqList &list, int i, ElementType &e){
//     if(i < 1 || i > list.length){
//         return;
//     }
//     e = list.elem[i - 1];
//     for(int j = i - 1; j < list.length - 1; j++){
//         list.elem[j] = list.elem[j + 1];
//     }
//     list.length--;
// }

// void find(SqList &list, int &i, ElementType e){
//     i = 1;
//     while(i <= list.length && list.elem[i - 1] != e){
//         i++;
//     }
//     if(i > list.length){
//         i = -1;
//     }
// }

